// 权限管理方面的数据在这里保管
// 思想：让一些页面都是基本默认页面每个人都有 但是一些页面就得需要有权限的用户
import { constantRoutes, asyncRoutes } from '@/router'
const state = {
  routes: constantRoutes// 所有人默认拥有的静态路由
}
const mutations = {
  // 在这里进行对数据的修改
  setRoutes(state, newRoutes) {
    // 每次更新都应该是在默认路由上进行添加
    state.routes = [...constantRoutes, ...newRoutes]
  }
}
const actions = {
  // 在获取完用户资料后进行筛选路由
  filterRoutes(context, menus) {
    // 在动态路由中筛选出能和menus对的上的路由
    // 定义一个数组
    const routes = []
    menus.forEach(key => {
      // 筛选添加到定义的数组里 在循环里添加就行
      // 这里为什么用展开运算符返回的可能是一个数组也可能是一个空对象
      routes.push(...asyncRoutes.filter(item => item.name === key))
    })
    //   调用context 这个是给左侧菜单和删除路由表准备的
    context.commit('setRoutes', routes)
    //   将数组返回出去 这个是给添加路由准备的
    return routes
  }
}
export default {
  // 为啥要设置namespaced
  // 默认情况下，模块内部的 action、mutation 和 getter 是注册在全局命名空间的——这样使得多个模块能够对同一 mutation 或 action 作出响应。
  // 相当于可以成为了带命名空间的模块
  namespaced: true,
  state,
  mutations,
  actions
}

